﻿// Класс для хранения и манипуляции стэка символов

using System;

class Demo
{
    public static void _Main()
    {
        // Инициализация стеков

        SimpleStack stc1 = new SimpleStack(10);
        SimpleStack stc2 = new SimpleStack(10);
        SimpleStack stc3 = new SimpleStack(10);
        
        // Заносим данные в первый стек
        for (int i = 100; !stc1.IsFull(); i++)       
            stc1.AddElement((char)i);

        // Выводим содержимое первого стека и заодно помещаем во второй стек
        Console.WriteLine("Содержимое stc1: ");
        while (!stc1.IsEmpty())
        {
            char ch = stc1.GetElement();
            Console.Write(ch);
            stc2.AddElement(ch);
        }

        // Выводим содержимое второго стека        
        Console.WriteLine("\nСодержимое stc2: ");
        while (!stc2.IsEmpty())
        {
            Console.Write(stc2.GetElement());
        }

        // Проверяем второй стек

        Console.ReadLine();
    }
}
class SimpleStack
{
    int stackSize;
    int elCount = 0;
    char[] chStack;

    // Инициализируем сэк и количество в нем элементов
    public SimpleStack(int size)
    {
        chStack = new char[size];
        stackSize = size;
    }

    // Добавляем элемент в стэк
    public void AddElement(char element)
    {
        if (stackSize == elCount)
        {
            Console.WriteLine("Стэк заполнен");
            return;
        }
        chStack[elCount] = element;
        elCount++;
    }

    // Извлекаем элемент из стэка
    public char GetElement()
    {
        if (elCount == 0)
        {
            Console.WriteLine("Стэк пуст");
            return (char) 0;
        }
        elCount--;
        return chStack[elCount];
    }

    // Проверяем заполнен ли стэк
    public bool IsFull()
    {
        return chStack.Length == elCount;
    }

    // Проверяем пуст ли стэк
    public bool IsEmpty()
    {
        return elCount == 0;
    }

    // Получаем размер стэка
    public int Size()
    {
        return chStack.Length;
    }

    // Получаем количество элементов с стэке
    public int ElementsCount()
    {
        return elCount;
    }
}